import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure

if __name__ == '__main__':
    x = np.linspace(-10, 10, 101)
    # print(x)
    y = np.linspace(-10, 10, 101)
    # print(y)

    # 利用 x y 坐标向量生成坐标矩阵元组，即 网格的形式
    # Return a tuple of coordinate matrices from coordinate vectors.
    X, Y = np.meshgrid(x, y)

    Z = (-X - 2 * Y) / 3
    # print(Z)

    print(Z.shape)

    # 单位：英寸
    figure = plt.figure(figsize=(10, 7))
    axes = figure.add_subplot(111, projection='3d')

    # 通过 xyz 点绘制曲面
    axes.plot_surface(X, Y, Z, color='blue', alpha=0.5)

    # 设置标签
    axes.set_xlabel("X-axis", fontsize=12)
    axes.set_ylabel("Y-axis", fontsize=12)
    axes.set_zlabel("Z-axis", fontsize=12)

    # 设置xyz 轴的坐标范围
    axes.set_xlim([-10, 10])
    axes.set_ylim([-10, 10])
    axes.set_zlim([-10, 10])

    # 关闭坐标平面底色
    axes.xaxis.pane.fill = False
    axes.yaxis.pane.fill = False
    axes.zaxis.pane.fill = False

    # 设置图题
    axes.set_title('x+2y+3z=0 surface')

    axes.view_init(elev=20, azim=30)

    plt.show()
